home *** CD-ROM | disk | FTP | other *** search
- ; I've found a little bug in acpizer's f-uckme.
- ; If you enter too long (>28) password, than, the end of password will
- ; overwrite the checksum of your password in memory, so i've created
- ; a lame keygen for acpizer's f-uckme
- ; maybe it's illegal, but it's not a patch, it's a password and it worx! =)
- ; the idea is - enter any 28 chars, and this keygen will generate 4 chars
- ; from this 28 chars and add it into the end of our password and writes into
- ; file. When your enter the password from this file - last 4 chars will
- ; overwrite password checksum in memory.
- ;
- ; (q) hijaq [UCL]/[rPG] #ucl'98
-
- .386c
- seg_a segment byte public use16
- assume cs:seg_a, ds:seg_a
-
-
- org 100h
-
- f_uckme proc far
-
- start:
- mov ah,09h
- mov dx,offset data_12
- int 21h
-
- mov ax,0A00h
- mov dx,offset InpBuf
- int 21h
- ;remove 0Dh from the end of entered name
- mov cx,0ffffh
- mov al,0Dh
- mov di,offset cs:data_3
- repnz scasb
- dec di
- mov byte ptr [di],20h
-
- ; generating checksum of password and writing it after our inputted name...
- NoNeedOfCheck:
- pushad ; Save all regs
- finit ; Initialize math uP
- fldpi ; Push Pi onto stack
- fld dword ptr cs:data_3 ; Push onto stack
- fxtract ; Extract st exponent
- fld dword ptr cs:data_5 ; Push onto stack
- fabs ; st = abs (st)
- fild dword ptr cs:data_4 ; Push integer to stk
- fsqrt ; st=square root(st)
- mov ecx,0FFFFFFFFh
-
- locloop_1:
- fxam ; Examine st
- fld dword ptr cs:data_7 ; Push onto stack
- fidivr dword ptr cs:data_6 ; st = memory / st
- fild dword ptr cs:data_4 ; Push integer to stk
- fidivr dword ptr cs:data_6 ; st = memory / st
- fxam ; Examine st
- fyl2xp1 ; st=st(1)*log2(st+1)
- fld dword ptr cs:data_7 ; Push onto stack
- fild dword ptr cs:data_4 ; Push integer to stk
- fsqrt ; st=square root(st)
- fild dword ptr cs:data_4 ; Push integer to stk
- fdiv st,st(1) ; st = st / st(#)
- fpatan ; Partial arctangent
- fyl2xp1 ; st=st(1)*log2(st+1)
- fxam ; Examine st
- fld dword ptr cs:data_7 ; Push onto stack
- fidivr dword ptr cs:data_6 ; st = memory / st
- fxam ; Examine st
- fld dword ptr cs:data_7 ; Push onto stack
- fild dword ptr cs:data_4 ; Push integer to stk
- fild dword ptr cs:data_9 ; Push integer to stk
- fsqrt ; st=square root(st)
- fdiv st,st(1) ; st = st / st(#)
- fpatan ; Partial arctangent
- fyl2xp1 ; st=st(1)*log2(st+1)
- fxam ; Examine st
- loop locloop_1 ; Loop if cx > 0
-
- fsqrt ; st=square root(st)
- fild dword ptr cs:data_8 ; Push integer to stk
- fsqrt ; st=square root(st)
- fdiv st,st(1) ; st = st / st(#)
- fpatan ; Partial arctangent
- fyl2xp1 ; st=st(1)*log2(st+1)
- fild dword ptr cs:data_4 ; Push integer to stk
- fyl2xp1 ; st=st(1)*log2(st+1)
- fdiv st,st(1) ; st = st / st(#)
- fsqrt ; st=square root(st)
- fild dword ptr cs:data_5 ; Push integer to stk
- fild dword ptr cs:data_6 ; Push integer to stk
- fsqrt ; st=square root(st)
- fdiv st,st(1) ; st = st / st(#)
- fsqrt ; st=square root(st)
- fdiv st,st(1) ; st = st / st(#)
- fpatan ; Partial arctangent
- fyl2xp1 ; st=st(1)*log2(st+1)
- fild dword ptr cs:data_4 ; Push integer to stk
- fsqrt ; st=square root(st)
- fxam ; Examine st
- fsqrt ; st=square root(st)
- fld dword ptr cs:data_4 ; Push onto stack
- fidivr dword ptr cs:data_4 ; st = memory / st
- fild dword ptr cs:data_6 ; Push integer to stk
- fdiv st,st(1) ; st = st / st(#)
- fpatan ; Partial arctangent
- fyl2xp1 ; st=st(1)*log2(st+1)
- fild dword ptr cs:data_8 ; Push integer to stk
- fsqrt ; st=square root(st)
- fyl2xp1 ; st=st(1)*log2(st+1)
- fdiv st,st(1) ; st = st / st(#)
- fild dword ptr cs:data_6 ; Push integer to stk
- fxam ; Examine st
- fld dword ptr cs:data_7 ; Push onto stack
- fidivr dword ptr cs:data_6 ; st = memory / st
- fild dword ptr cs:data_4 ; Push integer to stk
- fsqrt ; st=square root(st)
- fidivr dword ptr cs:data_6 ; st = memory / st
- fdiv st,st(1) ; st = st / st(#)
- fild dword ptr cs:data_4 ; Push integer to stk
- fild dword ptr cs:data_8 ; Push integer to stk
- fsqrt ; st=square root(st)
- fscale ; Scale st by st(1)
- fdiv st,st(1) ; st = st / st(#)
- fpatan ; Partial arctangent
- fyl2xp1 ; st=st(1)*log2(st+1)
- fxam ; Examine st
- fld dword ptr cs:data_8 ; Push onto stack
- fidivr dword ptr cs:data_8 ; st = memory / st
- fild dword ptr cs:data_4 ; Push integer to stk
- fsqrt ; st=square root(st)
- fild dword ptr cs:data_5 ; Push integer to stk
- fild dword ptr cs:data_6 ; Push integer to stk
- fsqrt ; st=square root(st)
- fdiv st,st(4) ; st = st / st(#)
- fpatan ; Partial arctangent
- fyl2xp1 ; st=st(1)*log2(st+1)
- fild dword ptr cs:data_8 ; Push integer to stk
- fsqrt ; st=square root(st)
- fdiv st,st(2) ; st = st / st(#)
- fincstp ; Increment stack ptr
- fdiv st,st(3) ; st = st / st(#)
- fisubr dword ptr cs:data_8 ; st = memory - st
- fpatan ; Partial arctangent
- fyl2xp1 ; st=st(1)*log2(st+1)
- fild dword ptr cs:data_8 ; Push integer to stk
- fsqrt ; st=square root(st)
- fdiv st,st(1) ; st = st / st(#)
- fpatan ; Partial arctangent
- fyl2xp1 ; st=st(1)*log2(st+1)
- fxam ; Examine st
- fld dword ptr cs:data_4 ; Push onto stack
- fidivr dword ptr cs:data_4 ; st = memory / st
- fild dword ptr cs:data_6 ; Push integer to stk
- fsqrt ; st=square root(st)
- fdiv st,st(1) ; st = st / st(#)
- fpatan ; Partial arctangent
- fmul st,st(2) ; st = st * st(#)
- fst cs:data_10 ; Store st to memory
- finit ; Initialize math uP
-
- popad ; Restore all regs
-
- mov ah,9
- mov dx,offset okMSG ; ('')
- int 21h
-
- mov ah,9
- mov dx,offset data_3
- int 21h ; DOS Services ah=function 09h
- ; display char string at ds:dx
- ;write password to file
- mov ah,3Ch
- xor cx,cx
- mov dx,offset fname
- int 21h
- mov fhand,ax
- mov ax,4200h
- mov bx,fhand
- xor cx,cx
- xor dx,dx
- int 21h
- mov ah,40h
- mov bx,fhand
- mov cx,34
- mov dx,offset data_3
- int 21h
- mov ah,3Eh
- mov bx,fhand
- int 21h
-
- retn
-
- InpBuf db 29
- InpLength db 0
- data_3 db 20h,20h,20h,20h
- data_4 db 20h,20h,20h,20h
- data_5 db 20h,20h,20h,20h
- data_6 db 20h,20h,20h,20h
- data_7 db 20h,20h,20h,20h
- data_8 db 20h,20h,20h,20h
- data_9 db 20h,20h,20h,20h
- data_10 dd 20202020h
- data_11 db 0Dh,0Ah,'$'
- data_12 db 'password generator for [·f·UCKME v1.0 by acpizer.] (q) hijaq [UCL]/[rPG]', 13,10
- db "to acpizer: i dunno, was it a trick or not, but it works! =)))",13,10
- db 13,10,' ■ enter your name: $'
- okMSG db 13,10," ■ your password: $"
- fname db 'f-uckme.key',0
- fhand dw 0000h
- f_uckme endp
-
- seg_a ends
- end start